package com.tedu.api.list;

import java.util.Collection;

/**
 * 测试：   1.创建父类：Fruit--属性：name名字 |  方法:获取名称|构造器
 *         2.创建2个子类：Apple Orange---构造器：传水果名
 *         3.创建TestJob类   泛型 ？ extends 父类
 *         约束---静态的方法 printFruit()
 *         约束要求：只能是继承父类的子类才可以使用
 *         单元测试：testE()测试--约束是否限制成功
 *        实际开发应用中，高级程序员制定
 */
public class Fruit{
    private String name; //私有属性  name  水果名称

    public String getName() { //获取名字
        return name;
    }

    public Fruit(String name) { //有参数构造器
        this.name = name;
    }
}
//创建两个子类：Apple和Orange继承Fruit
class Apple extends Fruit {
    public Apple() {  //Apple a=new Apple();  打印水果名称
        super("苹果");
    }
}
class Orange extends Fruit {
    public Orange() {
        super("橘子");
    }
}
//创建TestJob类--静态方法 printFruit：添加约束：传入类型一定是父类的子类
class TestJob{      //?【任意类型】 extends Fruit
    //传入类型必须继承于Fruit父类
    public static void printFruit(Collection<? extends Fruit> fruits){
        //增强for循环：父类Fruit 名称
        for(Fruit fruit:fruits){ //获取继承与父类的功能
            //打印对应对象名称
            System.out.println(fruit.getName());

        }
    }
}
//测试：上界限定：一定继承Fruit【Pear不继承Fruit】
class Pear{

}